package com.hpeu_01.day0126;

import org.junit.Test;

/**
 * 反射的方式获取Class类的几种方式：
 * 1. 使用类的.class属性来获取
 * 2. 调用对象的getClass()方法来获取
 * 3. 调用Class类的静态方法formName()来获取
 * 4. 通过类装载器来获取
 */
public class ReflectDemo01 {

    //1. 使用类的.class属性来获取
    @Test
    public void test01(){
        Class<Person> personClass = Person.class;
        System.out.println(personClass);
    }

    //2. 调用对象的getClass()方法来获取
    @Test
    public void test02(){
        Person person = new Person();
        Class<? extends Person> aClass = person.getClass();
        System.out.println(aClass);
    }

    //3. 调用Class类的静态方法formName()来获取
    @Test
    public void test03() throws Exception {
        Class<?> aClass = Class.forName("com.hpeu_01.day0126.Person");
        System.out.println(aClass);
    }

    // 4. 通过类装载器来获取
    @Test
    public void test04() throws Exception {
        ClassLoader classLoader = this.getClass().getClassLoader();
        Class<?> aClass = classLoader.loadClass("com.hpeu_01.day0126.Person");
        System.out.println(aClass);
    }
}
